function attrsCheck(target, attributes = [], error_break_of = true) {
    this.target = target
    this.status = true
    this.msg = "success"
    if (typeof (target) != "object") {
        throw new TypeError("[ERROR]: target not is object.")
    }
    for (let o = 0; o < attributes.length; ++o) {
        let v = attributes[o];
        let operation = 'normal'
        switch (operation) {
            case "|": {
                //TODO
                break;
            }
            case "&": {
                //TODO
                break;
            }
            case "normal": {
                if (!Reflect.has(target, v)) {
                    if (error_break_of) {
                        throw new TypeError("[ERROR]: instance ops(" + typeof (target) + ")" + v + " does not exist.");
                    } else {
                        this.Debug([`[vHandle.attrCheck] '${v}' does not exist, target:`, target])
                        this.reject("[ERROR]: instance ops(" + typeof (target) + ")" + v + " does not exist.")
                    }
                    break
                } else {
                    this.Debug([`[vHandle.attrCheck] '${v}' checked success.`])
                }
                break;
            }
        }
        if (!this.status) {
            break;
        }
    }
    if (this.status) {
        this.resolve("success")
    }
    return this
}
attrsCheck.prototype.resolve = function (value) {
    this.status = true
    this.msg = value
}
attrsCheck.prototype.reject = function (value) {
    this.status = false
    this.msg = value
}

attrsCheck.prototype.then = function (func) {
    if (this.status)
        func(this.target)
    return this
}
attrsCheck.prototype.catch = function (func) {
    if (!this.status) {
        func(this.msg)
    }
    return this
}

attrsCheck.prototype.Debug = function (info = []) {
    if (!(process.env.NODE_ENV === 'production' ? true : false)) {
        info.forEach(function (o) {
            console.log("%O", o)
        });
    }
}
export default attrsCheck